Java Technologies Custom Validation Logic তৈরি করা গাইড ও নোট

280

স্প্রিং বুট (Spring Boot) একটি শক্তিশালী ফ্রেমওয়ার্ক যা সাধারণত ডেটা ভ্যালিডেশন পরিচালনা করতে javax.validation এবং স্প্রিং @Valid অ্যানোটেশন ব্যবহার করে। তবে, কখনও কখনও আপনি ডিফল্ট ভ্যালিডেশন অ্যানোটেশন দ্বারা কাভার করা কিছু কাস্টম ভ্যালিডেশন লজিক প্রয়োগ করতে চান। এ ধরনের ক্ষেত্রে স্প্রিং বুটে কাস্টম ভ্যালিডেশন লজিক তৈরি করা সম্ভব। এখানে আমরা কিভাবে কাস্টম ভ্যালিডেশন লজিক তৈরি করা যায় এবং কীভাবে তা স্প্রিং বুট অ্যাপ্লিকেশনে প্রয়োগ করা যায় তা দেখব।

কাস্টম ভ্যালিডেশন লজিক তৈরি করার জন্য স্টেপস

  1. কাস্টম ভ্যালিডেটর তৈরি করা
  2. ভ্যালিডেটর ক্লাসে কাস্টম লজিক প্রয়োগ করা
  3. ডোমেইন অবজেক্টে কাস্টম ভ্যালিডেটর অ্যাপ্লাই করা
  4. কন্ট্রোলার বা সার্ভিসে @Valid বা @Validated ব্যবহার করা

১. কাস্টম ভ্যালিডেটর তৈরি করা

প্রথমে আপনাকে একটি কাস্টম ভ্যালিডেটর তৈরি করতে হবে। এটি একটি ক্লাস হবে যা ConstraintValidator ইন্টারফেসটি ইমপ্লিমেন্ট করবে এবং ভ্যালিডেশন লজিক লিখবে।

উদাহরণ:

ধরা যাক, আপনি এমন একটি ভ্যালিডেটর তৈরি করতে চান যা একটি String ফিল্ডের জন্য চেক করবে, যে ফিল্ডটি শুধুমাত্র নির্দিষ্ট একটি প্যাটার্ন মেনে চলবে (যেমন একটি ইউজারনেম যার মধ্যে কেবলমাত্র অক্ষর এবং সংখ্যা থাকবে এবং এটি 6 থেকে 15 অক্ষর হতে হবে)।

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class UsernameValidator implements ConstraintValidator<ValidUsername, String> {

    @Override
    public void initialize(ValidUsername constraintAnnotation) {
        // Initialization logic if needed
    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        // চেক করা হচ্ছে যে ভ্যালুটি 6 থেকে 15 অক্ষরের মধ্যে এবং শুধুমাত্র অক্ষর ও সংখ্যা রয়েছে
        if (value == null) {
            return false; // নাল ভ্যালু কেবল অনুমোদিত নয়
        }
        return value.matches("^[a-zA-Z0-9]{6,15}$");
    }
}

২. কাস্টম কনস্ট্রেইন্ট তৈরি করা

এবার, আমরা @ValidUsername নামক একটি কাস্টম অ্যানোটেশন তৈরি করব যা আমাদের তৈরি করা UsernameValidator ক্লাসের সাথে যুক্ত হবে।

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Constraint(validatedBy = UsernameValidator.class)
@Target({ ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface ValidUsername {

    String message() default "Invalid username. It must be between 6 to 15 characters and contain only letters and digits.";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}

এখানে @Constraint(validatedBy = UsernameValidator.class) দ্বারা @ValidUsername অ্যানোটেশনটি UsernameValidator ভ্যালিডেটর ক্লাসের সাথে যুক্ত হয়েছে।

৩. ডোমেইন অবজেক্টে কাস্টম ভ্যালিডেটর অ্যাপ্লাই করা

এবার, আমরা আমাদের ডোমেইন ক্লাসে এই কাস্টম ভ্যালিডেটর ব্যবহার করব। ধরুন, আমাদের একটি User ক্লাস রয়েছে, যেখানে ইউজারনেমের জন্য আমাদের কাস্টম ভ্যালিডেশন প্রয়োগ করতে হবে।

import javax.validation.constraints.NotNull;

public class User {

    @NotNull
    private Long id;

    @ValidUsername
    private String username;

    // Getters and Setters
}

এখানে User ক্লাসে username ফিল্ডের জন্য @ValidUsername অ্যানোটেশনটি প্রয়োগ করা হয়েছে।

৪. কন্ট্রোলার বা সার্ভিসে @Valid বা @Validated ব্যবহার করা

এখন, আপনাকে কন্ট্রোলার বা সার্ভিস লেয়ারে এই কাস্টম ভ্যালিডেশন লজিক কার্যকর করতে হবে। এটি করতে @Valid বা @Validated অ্যানোটেশন ব্যবহার করতে হবে।

উদাহরণ:

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;

@RestController
public class UserController {

    @PostMapping("/users")
    public String createUser(@Valid @RequestBody User user) {
        // যদি ইউজারনেম ভ্যালিড না হয়, স্প্রিং স্বয়ংক্রিয়ভাবে 400 Bad Request রিটার্ন করবে
        return "User created successfully!";
    }
}

এখানে, @Valid অ্যানোটেশন ব্যবহার করা হয়েছে যাতে User অবজেক্টের উপর কাস্টম ভ্যালিডেশন প্রয়োগ হয়। যদি ইউজারনেমটি সঠিক না হয়, তাহলে স্প্রিং বুট 400 (Bad Request) রেসপন্স রিটার্ন করবে এবং আপনার কাস্টম মেসেজ প্রদর্শন হবে।

কাস্টম ভ্যালিডেশন মেসেজ কাস্টমাইজ করা

আপনি যদি কাস্টম ভ্যালিডেশন মেসেজ কাস্টমাইজ করতে চান, তবে message ফিল্ড ব্যবহার করে তা করতে পারেন। এই মেসেজটি স্প্রিং বুট এপ্লিকেশন ব্যাকএন্ডে ৪০০ রেসপন্স কোড সহ ফিরে আসবে।

public @interface ValidUsername {

    String message() default "Invalid username. It must be between 6 to 15 characters and contain only letters and digits.";
    ...
}

সারাংশ

স্প্রিং বুটে কাস্টম ভ্যালিডেশন লজিক তৈরি করা খুবই সহজ এবং নমনীয়। আপনি কাস্টম ভ্যালিডেটর ক্লাস তৈরি করে আপনার নিজের কাস্টম ভ্যালিডেশন লজিক প্রয়োগ করতে পারেন। এরপর এই কাস্টম ভ্যালিডেটর অ্যাপ্লিকেশনের ডোমেইন অবজেক্টে ব্যবহার করা হয় এবং স্প্রিং বুট এটিকে হ্যান্ডেল করে। এর মাধ্যমে আপনি অ্যাপ্লিকেশনের ডেটা ভ্যালিডেশন আরো শক্তিশালী এবং নির্দিষ্টভাবে কাস্টমাইজ করতে পারেন।


Content added By
Promotion

Are you sure to start over?

Loading...